package com.southwind.springboottest.study.JavaIO;

/**
 * @description：TODO 在Java中读写XLS（Excel）文件，可以使用Apache POI库。Apache POI提供了许多用于处理Microsoft Office格式文件的API，包括XLS文件。
 *下面是一个简单的示例代码，演示如何使用Apache POI读取和写入XLS文件：
 * @author： HXG
 * @create： 2023/12/15 16:55
 */
import org.apache.poi.ss.usermodel.*;

import java.io.FileInputStream;
import java.io.FileOutputStream;

public class ExcelReadWriteExample {

    public static void main(String[] args) {
        String filePath = "path/to/your/file.xls";

        // 读取Excel文件
        try (FileInputStream fileInputStream = new FileInputStream(filePath);
             Workbook workbook = WorkbookFactory.create(fileInputStream)) {

            Sheet sheet = workbook.getSheetAt(0); // 获取第一个工作表
            for (Row row : sheet) {
                for (Cell cell : row) {
                    CellValue cellValue = evaluateCell(cell);
                    System.out.print(cellValue + "\t");
                }
                System.out.println();
            }

        } catch (Exception e) {
            e.printStackTrace();
        }

        // 写入Excel文件
        try (Workbook workbook = WorkbookFactory.create(true);
             FileOutputStream fileOutputStream = new FileOutputStream(filePath)) {

            Sheet sheet = workbook.createSheet("Sheet1"); // 创建一个名为"Sheet1"的工作表

            Row row = sheet.createRow(0); // 创建第一行
            Cell cell = row.createCell(0); // 创建第一个单元格
            cell.setCellValue("Hello, World!"); // 设置单元格的值

            workbook.write(fileOutputStream); // 将工作簿写入输出流

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private static CellValue evaluateCell(Cell cell) {
        FormulaEvaluator evaluator = cell.getSheet().getWorkbook().getCreationHelper().createFormulaEvaluator();
        return evaluator.evaluate(cell);
    }
}

